package com.fzj.example.design.singleton;

/**
* @Description
 * 多线程编程--volatile，synchronized不能不要。volatile保证可见性，有序性。synchronized保证原子性，可见性。不加，会有线程安全问题，每次访问时都要同步，会影响性能，且消耗更多的资源，这是懒汉式单例的缺点
 * 外部类装载的时候静态内部类不会装载，只有使用的时候才会装载，因此达成了懒汉式的效果
 * 推荐使用，无锁操作
* @Author  fanzj
* @Date   2020/5/4 3:11 下午
* @Param
* @Return
* @Exception
*
*/
public class LazySingleton3 {

    private static volatile LazySingleton3 instance;

    private LazySingleton3(){}

    private static class LazySingletonInnerClass {
        private static LazySingleton3 INSTANCE = new LazySingleton3();
    }

    public static synchronized LazySingleton3 lazySingleton(){
        return LazySingletonInnerClass.INSTANCE;
    }

}
